【iOSDC Japan 2024 レポート】DAY 1「Core Audio徹底解剖」を聞いてきた。

【iOSDC Japan 2024 レポート】DAY 1「Core Audio徹底解剖」を聞いてきた。

Clock Icon2024.08.24

はじめに

年に一度のiOSエンジニアの為のお祭りiOSDC Japan 2024に参加しています。

せっかくなので、参加したセッションのレポートを書きたいと思います。

Core Audio徹底解剖

登壇者

概要

みなさんはCore Audioを利用してiOSで音声を扱ったことはありますか?
iOSではCoreAudioをはじめ、AVAudioPlayer/AVAudioRecorderやAVAudioEngineなどさまざまな音声を扱うAPIが存在しますが、どのAPIを使ってどのような音声処理ができるのか?を語られることは少ないと思います。

このセッションでは、オーディオデータの取得と処理技術、リアルタイム録音技術、再生技術を学び、iOSアプリケーションのオーディオ機能を強化するための実践的な例とベストプラクティスを紹介します。

本セッションを聴き終わった際にはあなたもiOSで音声処理を試してみたくなることでしょう

  1. Core Audioの理解:
    • Core Audioのアーキテクチャの概要
    • iOSオーディオスタックにおけるCore Audioの役割
  2. オーディオデータの取得と処理:
    • オーディオデータの取得方法とその処理
    • サンプルレート、ビット深度、チャンネル数の基本概念
  3. 高度なオーディオ技術:
    • リアルタイムオーディオ録音の実装:
    • 効率的なバッファ管理とデータ転送
    • 音声エフェクトの実装と管理
    • オーディオエフェクトの追加と調整
  4. 実践的な例とデモ:
    • 実際のコードを用いたデモ
    • 実践的なサンプルプロジェクトの紹介

引用: fortee

資料

https://speakerdeck.com/entaku/core-audioche-di-jie-pou

感想

今回はCoreAudioを解剖していくというテーマのトークでした。全ての音声機能を掘り下げていくことは20分では難しいので音声録音機能にフォーカスして解剖を進めていました。

今回作成されたサンプルコードはGitHubで見ることができます。

https://github.com/entaku0818/coreAudioApp

音声録音機能を下記のAudio APIで実際に書いて解説いただけました。

  • AVAudioRecorder (AVFoundation)
  • AVAudioEngine (AVFoundation)
  • AudioQueueServices (CoreAudio)
  • Audio Unit (CoreAudio)

AVAudioRecorder辺りはまだ見覚えのあるコードが出てくるのですが、上記のAPIを上から順に進んでいけば行くほど実装が複雑になっていきました。その代わりに処理を柔軟性は向上しているように感じました。
実際に音声系で何か作る場合も上から順に試していき、難しそうなら下に降りていくやり方を採用していきたいと思います。

最後の応用編では、音声録音以外での事例も紹介がありました。

  • 音量の見える化
  • 音声のリアルタイムアップロード
  • 文字起こし

その昔、SFSpeechRecognizerを使って、声で子どもにレゴ電車を操作してもらうというアプリを作った機能が蘇り、久々にまた遊んでみるのも楽しそうだなと感じました。

具体的なAPIやサンプルコードが紹介され、実際の実装方法を詳しく解説していただきました。抽象度の高いAPIから低いAPIまで、幅広い層での音声処理を理解できる貴重な内容でした。ありがとうございました!

参考文献

https://developer.apple.com/library/archive/documentation/MusicAudio/Conceptual/CoreAudioOverview/Introduction/Introduction.html
https://developer.apple.com/documentation/avfaudio/avaudiorecorder
https://developer.apple.com/documentation/avfaudio/avaudioengine
https://developer.apple.com/documentation/audiotoolbox/audio_queue_services
https://developer.apple.com/library/archive/documentation/MusicAudio/Conceptual/AudioUnitProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40003278-CH1-SW2

おわりに

音声処理をすることになったら、またこのセッションと参考文献をみることにします。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.